module reset(
	clk,
	reset,
	Mem_Reset,
	HD_Reset,
	Ar_Reset,
	Core_Reset
);

input		clk;
input		reset;
output		Mem_Reset;
output		HD_Reset;
output		Ar_Reset;
output		Core_Reset;


reg			Mem_Reset;
reg			HD_Reset;
reg			Ar_Reset;
reg			Core_Reset;
integer			ciclo_reset;


// inicializacion
// inicializar con los resets activo (0=activo)
initial begin
	Mem_Reset <= 0;
	HD_Reset <= 0;
	Ar_Reset <= 0;
	Core_Reset <= 0;
	ciclo_reset =6;
end

always @(posedge reset) begin 
	ciclo_reset = 0;
end

always @(negedge reset) begin 
	if(ciclo_reset >= 6) begin 
		Mem_Reset <= 0;
		HD_Reset <= 0;
		Ar_Reset <= 0;
		Core_Reset <= 0;
		ciclo_reset =6;	 
	end
end
									  							 
// sincroniando con el reloj
always @(posedge clk) begin
	
	ciclo_reset=ciclo_reset+1;
	
	if (ciclo_reset == 1) begin
		Mem_Reset <=1;
	end
	
	if (ciclo_reset == 2) begin
		HD_Reset <=1;
		Mem_Reset <=0;
	end
	if (ciclo_reset == 3) begin
		Ar_Reset <=1;
		HD_Reset <=0;
	end
	if (ciclo_reset == 4) begin
		Core_Reset <=1;
		Ar_Reset <=0;
	end
	if (ciclo_reset == 5) begin
		Core_Reset <=0;
	end
end

endmodule
